package com.cardone.platform.authority.service;

import java.util.List;
import java.util.Map;

import com.cardone.common.cache.support.CacheEvictSupport;
import com.cardone.common.dto.PaginationDto;
import com.cardone.platform.authority.dto.UsGrBusinessAreaDto;
import com.cardone.platform.authority.dto.UsGroupOrgDto;
import com.cardone.platform.authority.dto.UsGroupRoleDto;
import com.cardone.platform.authority.dto.UsGroupUserDto;
import com.cardone.platform.authority.dto.UserGroupDto;

/**
 * 用户组服务
 * 
 * @author yaoht
 */
public interface UserGrService extends CacheEvictSupport {
	/**
	 * spring bean id
	 */
	String BEAN_ID = "com.cardone.platform.authority.service.UserGrService";

	/**
	 * 保存:用户组
	 * 
	 * @param saveUserGroup
	 *            用户组对象
	 * 
	 * @return 用户组对象
	 */
	UserGroupDto saveUserGroupByIdOrCode(final UserGroupDto saveUserGroup);

	/**
	 * 保存:用户组
	 * 
	 * @param saveUserGroup
	 *            用户组对象
	 * 
	 * @return 用户组对象
	 */
	UserGroupDto saveUserGroupByName(final UserGroupDto saveUserGroup);

	/**
	 * 删除:用户组
	 * 
	 * @param deleteUserGroup
	 *            用户组对象
	 * 
	 * @return 影响行数
	 */
	int deleteUserGroupByCode(final UserGroupDto deleteUserGroup);

	/**
	 * 删除:用户组
	 * 
	 * @param deleteUserGroup
	 *            用户组对象
	 * 
	 * @return 影响行数
	 */
	int deleteUserGroupByIds(final UserGroupDto deleteUserGroup);

	/**
	 * 设置:用户组
	 * 
	 * @param updateUserGroup
	 *            用户组对象
	 * 
	 * @return 影响行数
	 */
	int updateUserGroupByCode(final UserGroupDto updateUserGroup);

	/**
	 * 设置:用户组
	 * 
	 * @param updateUserGroup
	 *            用户组对象
	 * 
	 * @return 影响行数
	 */
	int updateUserGroupByIds(final UserGroupDto updateUserGroup);

	/**
	 * 读取:用户组
	 * 
	 * @param readUserGroup
	 *            用户组对象
	 * 
	 * @return 用户组对象
	 */
	Integer readUserGroupByCodeNqId(final UserGroupDto readUserGroup);

	/**
	 * 读取:用户组
	 * 
	 * @param readUserGroup
	 *            用户组对象
	 * 
	 * @return 用户组对象
	 */
	Integer readUserGroupByName(final UserGroupDto readUserGroup);

	/**
	 * 查询:用户组
	 * 
	 * @param findUserGroup
	 *            用户组对象
	 * 
	 * @return 用户组对象
	 */
	UserGroupDto findUserGroupByCode(final UserGroupDto findUserGroup);

	/**
	 * 查询:用户组
	 * 
	 * @param findUserGroup
	 *            用户组对象
	 * 
	 * @return 用户组对象
	 */
	UserGroupDto findUserGroupById(final UserGroupDto findUserGroup);

	/**
	 * 查询:用户组
	 * 
	 * @param findListUserGroup
	 *            用户组对象
	 * 
	 * @return 用户组对象集合
	 */
	List<UserGroupDto> findListUserGroupByCode(final UserGroupDto findListUserGroup);

	/**
	 * 查询:用户组
	 * 
	 * @param findListUserGroup
	 *            用户组对象
	 * 
	 * @return 用户组对象集合
	 */
	List<UserGroupDto> findListUserGroupByName(final UserGroupDto findListUserGroup);

	/**
	 * 分页:用户组
	 * 
	 * @param paginationUserGroup
	 *            用户组对象
	 * 
	 * @return 用户组分页对象
	 */
	PaginationDto<UserGroupDto> paginationUserGroupByCode(final UserGroupDto paginationUserGroup);

	/**
	 * 分页:用户组
	 * 
	 * @param paginationUserGroup
	 *            用户组对象
	 * 
	 * @return 用户组分页对象
	 */
	PaginationDto<Map<String, Object>> paginationUserGroupByName(final UserGroupDto paginationUserGroup);

	/**
	 * 保存:用户组与组织
	 * 
	 * @param saveUsGroupOrg
	 *            用户组与组织对象
	 * 
	 * @return 用户组与组织对象
	 */
	UsGroupOrgDto saveUsGroupOrgByIdOrCode(final UsGroupOrgDto saveUsGroupOrg);

	/**
	 * 保存:用户组与组织
	 * 
	 * @param saveUsGroupOrg
	 *            用户组与组织对象
	 * 
	 * @return 用户组与组织对象
	 */
	UsGroupOrgDto saveUsGroupOrgByName(final UsGroupOrgDto saveUsGroupOrg);

	/**
	 * 删除:用户组与组织
	 * 
	 * @param deleteUsGroupOrg
	 *            用户组与组织对象
	 * 
	 * @return 影响行数
	 */
	int deleteUsGroupOrgByCode(final UsGroupOrgDto deleteUsGroupOrg);

	/**
	 * 删除:用户组与组织
	 * 
	 * @param deleteUsGroupOrg
	 *            用户组与组织对象
	 * 
	 * @return 影响行数
	 */
	int deleteUsGroupOrgByIds(final UsGroupOrgDto deleteUsGroupOrg);

	/**
	 * 设置:用户组与组织
	 * 
	 * @param updateUsGroupOrg
	 *            用户组与组织对象
	 * 
	 * @return 影响行数
	 */
	int updateUsGroupOrgByCode(final UsGroupOrgDto updateUsGroupOrg);

	/**
	 * 设置:用户组与组织
	 * 
	 * @param updateUsGroupOrg
	 *            用户组与组织对象
	 * 
	 * @return 影响行数
	 */
	int updateUsGroupOrgByIds(final UsGroupOrgDto updateUsGroupOrg);

	/**
	 * 读取:用户组与组织
	 * 
	 * @param readUsGroupOrg
	 *            用户组与组织对象
	 * 
	 * @return 用户组与组织对象
	 */
	Integer readUsGroupOrgByCodeNqId(final UsGroupOrgDto readUsGroupOrg);

	/**
	 * 读取:用户组与组织
	 * 
	 * @param readUsGroupOrg
	 *            用户组与组织对象
	 * 
	 * @return 用户组与组织对象
	 */
	Integer readUsGroupOrgByName(final UsGroupOrgDto readUsGroupOrg);

	/**
	 * 查询:用户组与组织
	 * 
	 * @param findUsGroupOrg
	 *            用户组与组织对象
	 * 
	 * @return 用户组与组织对象
	 */
	UsGroupOrgDto findUsGroupOrgByCode(final UsGroupOrgDto findUsGroupOrg);

	/**
	 * 查询:用户组与组织
	 * 
	 * @param findUsGroupOrg
	 *            用户组与组织对象
	 * 
	 * @return 用户组与组织对象
	 */
	UsGroupOrgDto findUsGroupOrgById(final UsGroupOrgDto findUsGroupOrg);

	/**
	 * 查询:用户组与组织
	 * 
	 * @param findListUsGroupOrg
	 *            用户组与组织对象
	 * 
	 * @return 用户组与组织对象集合
	 */
	List<UsGroupOrgDto> findListUsGroupOrgByCode(final UsGroupOrgDto findListUsGroupOrg);

	/**
	 * 查询:用户组与组织
	 * 
	 * @param findListUsGroupOrg
	 *            用户组与组织对象
	 * 
	 * @return 用户组与组织对象集合
	 */
	List<UsGroupOrgDto> findListUsGroupOrgByName(final UsGroupOrgDto findListUsGroupOrg);

	/**
	 * 分页:用户组与组织
	 * 
	 * @param paginationUsGroupOrg
	 *            用户组与组织对象
	 * 
	 * @return 用户组与组织分页对象
	 */
	PaginationDto<UsGroupOrgDto> paginationUsGroupOrgByCode(final UsGroupOrgDto paginationUsGroupOrg);

	/**
	 * 分页:用户组与组织
	 * 
	 * @param paginationUsGroupOrg
	 *            用户组与组织对象
	 * 
	 * @return 用户组与组织分页对象
	 */
	PaginationDto<Map<String, Object>> paginationUsGroupOrgByName(final UsGroupOrgDto paginationUsGroupOrg);

	/**
	 * 保存:用户组与业务范围
	 * 
	 * @param saveUsGrBusinessArea
	 *            用户组与业务范围对象
	 * 
	 * @return 用户组与业务范围对象
	 */
	UsGrBusinessAreaDto saveUsGrBusinessAreaByIdOrCode(final UsGrBusinessAreaDto saveUsGrBusinessArea);

	/**
	 * 保存:用户组与业务范围
	 * 
	 * @param saveUsGrBusinessArea
	 *            用户组与业务范围对象
	 * 
	 * @return 用户组与业务范围对象
	 */
	UsGrBusinessAreaDto saveUsGrBusinessAreaByName(final UsGrBusinessAreaDto saveUsGrBusinessArea);

	/**
	 * 删除:用户组与业务范围
	 * 
	 * @param deleteUsGrBusinessArea
	 *            用户组与业务范围对象
	 * 
	 * @return 影响行数
	 */
	int deleteUsGrBusinessAreaByCode(final UsGrBusinessAreaDto deleteUsGrBusinessArea);

	/**
	 * 删除:用户组与业务范围
	 * 
	 * @param deleteUsGrBusinessArea
	 *            用户组与业务范围对象
	 * 
	 * @return 影响行数
	 */
	int deleteUsGrBusinessAreaByIds(final UsGrBusinessAreaDto deleteUsGrBusinessArea);

	/**
	 * 设置:用户组与业务范围
	 * 
	 * @param updateUsGrBusinessArea
	 *            用户组与业务范围对象
	 * 
	 * @return 影响行数
	 */
	int updateUsGrBusinessAreaByCode(final UsGrBusinessAreaDto updateUsGrBusinessArea);

	/**
	 * 设置:用户组与业务范围
	 * 
	 * @param updateUsGrBusinessArea
	 *            用户组与业务范围对象
	 * 
	 * @return 影响行数
	 */
	int updateUsGrBusinessAreaByIds(final UsGrBusinessAreaDto updateUsGrBusinessArea);

	/**
	 * 读取:用户组与业务范围
	 * 
	 * @param readUsGrBusinessArea
	 *            用户组与业务范围对象
	 * 
	 * @return 用户组与业务范围对象
	 */
	Integer readUsGrBusinessAreaByCodeNqId(final UsGrBusinessAreaDto readUsGrBusinessArea);

	/**
	 * 读取:用户组与业务范围
	 * 
	 * @param readUsGrBusinessArea
	 *            用户组与业务范围对象
	 * 
	 * @return 用户组与业务范围对象
	 */
	Integer readUsGrBusinessAreaByName(final UsGrBusinessAreaDto readUsGrBusinessArea);

	/**
	 * 查询:用户组与业务范围
	 * 
	 * @param findUsGrBusinessArea
	 *            用户组与业务范围对象
	 * 
	 * @return 用户组与业务范围对象
	 */
	UsGrBusinessAreaDto findUsGrBusinessAreaByCode(final UsGrBusinessAreaDto findUsGrBusinessArea);

	/**
	 * 查询:用户组与业务范围
	 * 
	 * @param findUsGrBusinessArea
	 *            用户组与业务范围对象
	 * 
	 * @return 用户组与业务范围对象
	 */
	UsGrBusinessAreaDto findUsGrBusinessAreaById(final UsGrBusinessAreaDto findUsGrBusinessArea);

	/**
	 * 查询:用户组与业务范围
	 * 
	 * @param findListUsGrBusinessArea
	 *            用户组与业务范围对象
	 * 
	 * @return 用户组与业务范围对象集合
	 */
	List<UsGrBusinessAreaDto> findListUsGrBusinessAreaByCode(final UsGrBusinessAreaDto findListUsGrBusinessArea);

	/**
	 * 查询:用户组与业务范围
	 * 
	 * @param findListUsGrBusinessArea
	 *            用户组与业务范围对象
	 * 
	 * @return 用户组与业务范围对象集合
	 */
	List<UsGrBusinessAreaDto> findListUsGrBusinessAreaByName(final UsGrBusinessAreaDto findListUsGrBusinessArea);

	/**
	 * 分页:用户组与业务范围
	 * 
	 * @param paginationUsGrBusinessArea
	 *            用户组与业务范围对象
	 * 
	 * @return 用户组与业务范围分页对象
	 */
	PaginationDto<UsGrBusinessAreaDto> paginationUsGrBusinessAreaByCode(final UsGrBusinessAreaDto paginationUsGrBusinessArea);

	/**
	 * 分页:用户组与业务范围
	 * 
	 * @param paginationUsGrBusinessArea
	 *            用户组与业务范围对象
	 * 
	 * @return 用户组与业务范围分页对象
	 */
	PaginationDto<Map<String, Object>> paginationUsGrBusinessAreaByName(final UsGrBusinessAreaDto paginationUsGrBusinessArea);

	/**
	 * 保存:用户组与角色
	 * 
	 * @param saveUsGroupRole
	 *            用户组与角色对象
	 * 
	 * @return 用户组与角色对象
	 */
	UsGroupRoleDto saveUsGroupRoleByIdOrCode(final UsGroupRoleDto saveUsGroupRole);

	/**
	 * 保存:用户组与角色
	 * 
	 * @param saveUsGroupRole
	 *            用户组与角色对象
	 * 
	 * @return 用户组与角色对象
	 */
	UsGroupRoleDto saveUsGroupRoleByName(final UsGroupRoleDto saveUsGroupRole);

	/**
	 * 删除:用户组与角色
	 * 
	 * @param deleteUsGroupRole
	 *            用户组与角色对象
	 * 
	 * @return 影响行数
	 */
	int deleteUsGroupRoleByCode(final UsGroupRoleDto deleteUsGroupRole);

	/**
	 * 删除:用户组与角色
	 * 
	 * @param deleteUsGroupRole
	 *            用户组与角色对象
	 * 
	 * @return 影响行数
	 */
	int deleteUsGroupRoleByIds(final UsGroupRoleDto deleteUsGroupRole);

	/**
	 * 设置:用户组与角色
	 * 
	 * @param updateUsGroupRole
	 *            用户组与角色对象
	 * 
	 * @return 影响行数
	 */
	int updateUsGroupRoleByCode(final UsGroupRoleDto updateUsGroupRole);

	/**
	 * 设置:用户组与角色
	 * 
	 * @param updateUsGroupRole
	 *            用户组与角色对象
	 * 
	 * @return 影响行数
	 */
	int updateUsGroupRoleByIds(final UsGroupRoleDto updateUsGroupRole);

	/**
	 * 读取:用户组与角色
	 * 
	 * @param readUsGroupRole
	 *            用户组与角色对象
	 * 
	 * @return 用户组与角色对象
	 */
	Integer readUsGroupRoleByCodeNqId(final UsGroupRoleDto readUsGroupRole);

	/**
	 * 读取:用户组与角色
	 * 
	 * @param readUsGroupRole
	 *            用户组与角色对象
	 * 
	 * @return 用户组与角色对象
	 */
	Integer readUsGroupRoleByName(final UsGroupRoleDto readUsGroupRole);

	/**
	 * 查询:用户组与角色
	 * 
	 * @param findUsGroupRole
	 *            用户组与角色对象
	 * 
	 * @return 用户组与角色对象
	 */
	UsGroupRoleDto findUsGroupRoleByCode(final UsGroupRoleDto findUsGroupRole);

	/**
	 * 查询:用户组与角色
	 * 
	 * @param findUsGroupRole
	 *            用户组与角色对象
	 * 
	 * @return 用户组与角色对象
	 */
	UsGroupRoleDto findUsGroupRoleById(final UsGroupRoleDto findUsGroupRole);

	/**
	 * 查询:用户组与角色
	 * 
	 * @param findListUsGroupRole
	 *            用户组与角色对象
	 * 
	 * @return 用户组与角色对象集合
	 */
	List<UsGroupRoleDto> findListUsGroupRoleByCode(final UsGroupRoleDto findListUsGroupRole);

	/**
	 * 查询:用户组与角色
	 * 
	 * @param findListUsGroupRole
	 *            用户组与角色对象
	 * 
	 * @return 用户组与角色对象集合
	 */
	List<UsGroupRoleDto> findListUsGroupRoleByName(final UsGroupRoleDto findListUsGroupRole);

	/**
	 * 分页:用户组与角色
	 * 
	 * @param paginationUsGroupRole
	 *            用户组与角色对象
	 * 
	 * @return 用户组与角色分页对象
	 */
	PaginationDto<UsGroupRoleDto> paginationUsGroupRoleByCode(final UsGroupRoleDto paginationUsGroupRole);

	/**
	 * 分页:用户组与角色
	 * 
	 * @param paginationUsGroupRole
	 *            用户组与角色对象
	 * 
	 * @return 用户组与角色分页对象
	 */
	PaginationDto<Map<String, Object>> paginationUsGroupRoleByName(final UsGroupRoleDto paginationUsGroupRole);

	/**
	 * 保存:用户组与用户
	 * 
	 * @param saveUsGroupUser
	 *            用户组与用户对象
	 * 
	 * @return 用户组与用户对象
	 */
	UsGroupUserDto saveUsGroupUserByIdOrCode(final UsGroupUserDto saveUsGroupUser);

	/**
	 * 保存:用户组与用户
	 * 
	 * @param saveUsGroupUser
	 *            用户组与用户对象
	 * 
	 * @return 用户组与用户对象
	 */
	UsGroupUserDto saveUsGroupUserByName(final UsGroupUserDto saveUsGroupUser);

	/**
	 * 删除:用户组与用户
	 * 
	 * @param deleteUsGroupUser
	 *            用户组与用户对象
	 * 
	 * @return 影响行数
	 */
	int deleteUsGroupUserByCode(final UsGroupUserDto deleteUsGroupUser);

	/**
	 * 删除:用户组与用户
	 * 
	 * @param deleteUsGroupUser
	 *            用户组与用户对象
	 * 
	 * @return 影响行数
	 */
	int deleteUsGroupUserByIds(final UsGroupUserDto deleteUsGroupUser);

	/**
	 * 设置:用户组与用户
	 * 
	 * @param updateUsGroupUser
	 *            用户组与用户对象
	 * 
	 * @return 影响行数
	 */
	int updateUsGroupUserByCode(final UsGroupUserDto updateUsGroupUser);

	/**
	 * 设置:用户组与用户
	 * 
	 * @param updateUsGroupUser
	 *            用户组与用户对象
	 * 
	 * @return 影响行数
	 */
	int updateUsGroupUserByIds(final UsGroupUserDto updateUsGroupUser);

	/**
	 * 读取:用户组与用户
	 * 
	 * @param readUsGroupUser
	 *            用户组与用户对象
	 * 
	 * @return 用户组与用户对象
	 */
	Integer readUsGroupUserByCodeNqId(final UsGroupUserDto readUsGroupUser);

	/**
	 * 读取:用户组与用户
	 * 
	 * @param readUsGroupUser
	 *            用户组与用户对象
	 * 
	 * @return 用户组与用户对象
	 */
	Integer readUsGroupUserByName(final UsGroupUserDto readUsGroupUser);

	/**
	 * 查询:用户组与用户
	 * 
	 * @param findUsGroupUser
	 *            用户组与用户对象
	 * 
	 * @return 用户组与用户对象
	 */
	UsGroupUserDto findUsGroupUserByCode(final UsGroupUserDto findUsGroupUser);

	/**
	 * 查询:用户组与用户
	 * 
	 * @param findUsGroupUser
	 *            用户组与用户对象
	 * 
	 * @return 用户组与用户对象
	 */
	UsGroupUserDto findUsGroupUserById(final UsGroupUserDto findUsGroupUser);

	/**
	 * 查询:用户组与用户
	 * 
	 * @param findListUsGroupUser
	 *            用户组与用户对象
	 * 
	 * @return 用户组与用户对象集合
	 */
	List<UsGroupUserDto> findListUsGroupUserByCode(final UsGroupUserDto findListUsGroupUser);

	/**
	 * 查询:用户组与用户
	 * 
	 * @param findListUsGroupUser
	 *            用户组与用户对象
	 * 
	 * @return 用户组与用户对象集合
	 */
	List<UsGroupUserDto> findListUsGroupUserByName(final UsGroupUserDto findListUsGroupUser);

	/**
	 * 分页:用户组与用户
	 * 
	 * @param paginationUsGroupUser
	 *            用户组与用户对象
	 * 
	 * @return 用户组与用户分页对象
	 */
	PaginationDto<UsGroupUserDto> paginationUsGroupUserByCode(final UsGroupUserDto paginationUsGroupUser);

	/**
	 * 分页:用户组与用户
	 * 
	 * @param paginationUsGroupUser
	 *            用户组与用户对象
	 * 
	 * @return 用户组与用户分页对象
	 */
	PaginationDto<Map<String, Object>> paginationUsGroupUserByName(final UsGroupUserDto paginationUsGroupUser);
}